Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data and includes random-access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM), among others. Non-volatile memory can provide persistent data by retaining stored information when not powered and can include NAND flash memory, NOR flash memory, read only memory (ROM), Electrically Erasable Programmable ROM (EEPROM), Erasable Programmable ROM (EPROM), and phase change random access memory (PCRAM), among others.
Memory devices can be combined together to form a solid state drive (SSD). An SSD can include non-volatile memory, e.g., NAND flash memory and NOR flash memory, and/or can include volatile memory, e.g., DRAM and SRAM, among various other types of non-volatile and volatile memory.
An SSD can be used to replace hard disk drives as the main storage device for a computer, as the SSD can have advantages over hard drives in terms of performance, size, weight, ruggedness, operating temperature range, and power consumption. For example, SSDs can have superior performance when compared to magnetic disk drives due to their lack of moving parts, which may avoid seek time, latency, and other electro-mechanical delays associated with magnetic disk drives. SSD manufacturers can use non-volatile flash memory to create flash SSDs that may not use an internal battery supply, thus allowing the drive to be more versatile and compact.
An SSD can include one or more memory devices, e.g., one or more memory chips. As one of ordinary skill in the art will appreciate, a memory chip can include one or more dies. Each die can include one or more memory arrays and peripheral circuitry thereon. A memory array can include one or more planes, with each plane including one or more physical blocks of memory cells. Each physical block can include one or more pages of memory cells that can store one or more sectors of data.
SSDs can interface with a host system with a serial interface such as universal serial bus (USB), serial advanced technology attachment (SATA), or peripheral component interconnect express (PCIe), among others. Serial interfaces such as USB, SATA, and PCIe may have error detection mechanisms such as cyclic redundancy check (CRC) built into the link layer or transport layer of the architecture of the respective interfaces. CRC may include the ability to detect the presence of errors caused by noise or other impairments during transmission of data from a transmitter to a receiver. CRC data generation may be based on a frame structure supported by a particular interface.
For example, a SATA frame structure may include a start-of-frame (SOF), followed by a frame information structure (FIS), followed by CRC data, and followed by an end-of-frame (EOF). SATA may use 32-bits of CRC data calculated over the contents of the FIS. An example of a 32-bit CRC polynomial used in the calculation of CRC data is: X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1. In the event that the FIS contains an odd number of words, e.g., 16 bit segments, the last word of the FIS may be padded with zeros to form a full double word (dword), e.g., 32 bits. A SATA frame may include 2064 dwords including the FIS and CRC data, wherein the FIS payload may include 2048 dwords (8192 bytes). However, the payload may include less data.
As one of ordinary skill in the art will appreciate, logical block addressing is a scheme that can be used by a host for identifying a sector of information, e.g., each sector can correspond to a unique logical block address (LBA). A sector may be the smallest addressable portion of a storage volume. As an example, a sector of data can be a number of bytes of data, e.g., 512 bytes. Because each payload at a serial host interface, e.g., a SATA interface, does not necessarily include the same number of bytes, and because payloads at a serial host interface of a mass storage device may be of different units, the CRC data may not propagate past the host interface, e.g., the link or transport layer of the host interface.